package com.hzlj.position.locate.service;

import com.fz.common.base.dto.PageParamDTO;
import com.fz.common.base.dto.QueryPageResultDTO;
import com.hzlj.position.config.common.dto.common.PositionCommonDTO;
import com.hzlj.position.config.common.dto.common.PositionHandleExtDTO;
import com.hzlj.position.config.common.dto.common.PositionHandleQueryResultDTO;
import com.hzlj.position.locate.common.common.PositionWithHandleDTO;
import com.hzlj.position.locate.common.common.ReadUpdateDTO;
import com.hzlj.position.locate.common.dto.position.*;
import com.hzlj.position.locate.common.model.Position;

import java.util.Date;
import java.util.List;

/**
 * 定位记录-分表(Position)表服务接口
 *
 * @author lifh
 * @date 2023-03-16 12:48:18
 */
public interface PositionService {

    PositionQueryResultDTO getPosition(String id, Date positionTime);

    PositionExtDTO getPositionExt(String id, Date positionTime);

    void updatePositionExt(String id, Date positionTime, PositionExtDTO positionExt);

    void saveBatch(List<Position> positions);

    List<PositionCommonDTO> listPosition4Abn(String jgCode, Date startTime, Date endTime);

    List<PositionCommonDTO> listPosition4AbnByJzId(String jzId, Date startTime, Date endTime);

    List<PositionWithHandleDTO> listPosition4Handle(PositionQueryParamDTO params);

    List<PositionQueryResultDTO> listPosition(PositionQueryParamDTO dto);

    QueryPageResultDTO<PositionQueryResultDTO> pagePosition(PositionQueryParamDTO dto, PageParamDTO page);

    void handle(PositionHandleDTO dto);

    void handleSysCheck(PositionHandleDTO dto);
    /**
     * 设置已读
     */
    void read(ReadUpdateDTO dto);

    void sync(PositionQueryParamDTO dto);

    void updateSync(PositionSyncDTO sync);

    PositionHandleQueryResultDTO getHandleResult(String id, Date positionTime);

    PositionHandleExtDTO getHandleResultExt(String id, Date positionTime);

    List<String> listJzIds4Effective(Date startTime, Date endTime);

}
